package pe.edu.upc.dsd.epica.dao;

import java.util.List;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import pe.edu.upc.dsd.epica.model.PromocionxUsuario;

public class PromocionxUsuarioDaoJdbc extends SimpleJdbcDaoSupport implements PromocionxUsuarioDao {

	@Override
	public void save(PromocionxUsuario usuarioPromocion) {
		getSimpleJdbcTemplate().update("insert into usuarioxpromocion(codUsuario,codPromocion,numVisitas) values(?,?,?)",
				usuarioPromocion.getUsuario().getCodigo(),
				usuarioPromocion.getPromocion().getCodigo(),
				usuarioPromocion.getNumVisitas());		
	}

	@Override
	public void update(PromocionxUsuario usuarioPromocion) {
		getSimpleJdbcTemplate().
		update("update `usuarioxpromocion` set numVisitas=? where codUsuario=? and codPromocion=?", 
				usuarioPromocion.getNumVisitas(),
				usuarioPromocion.getUsuario().getCodigo(),
				usuarioPromocion.getPromocion().getCodigo());		
	}

	@Override
	public void delete(PromocionxUsuario usuarioPromocion) {
		getSimpleJdbcTemplate().update("delete from `usuarioxpromocion` where codUsuario=? and codPromocion=?",
				usuarioPromocion.getUsuario().getCodigo(),
				usuarioPromocion.getPromocion().getCodigo());		
	}

	@Override
	public List<PromocionxUsuario> findByPromocionCode(String codigo) {
		return getSimpleJdbcTemplate().
				query("select codUsuario, codPromocion, numVisitas from `usuarioxpromocion` where codPromocion = ?", 
				new BeanPropertyRowMapper<PromocionxUsuario>(PromocionxUsuario.class), codigo);
	}

	@Override
	public List<PromocionxUsuario> findByUsuarioCode(String codigo) {
		return getSimpleJdbcTemplate().
				query("select codUsuario, codPromocion, numVisitas from `usuarioxpromocion` where codUsuario = ?", 
				new BeanPropertyRowMapper<PromocionxUsuario>(PromocionxUsuario.class), codigo);
	}

	@Override
	public int getCountByPromocionCode(String codigo) {
		return getSimpleJdbcTemplate().queryForInt("select count(*) from `usuarioxpromocion` where codPromocion=?",codigo);
	}

	@Override
	public PromocionxUsuario findByUsuarioPromocion(PromocionxUsuario promoUsuario) {
		return getSimpleJdbcTemplate().
				queryForObject("select codUsuario, codPromocion, numVisitas from `usuarioxpromocion` where codUsuario = ? and codpromocion=?", 
				new BeanPropertyRowMapper<PromocionxUsuario>(PromocionxUsuario.class), promoUsuario.getUsuario().getCodigo(),promoUsuario.getPromocion().getCodigo());
	}	
	
}
